package one;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ExceptionTest_Info {
    static boolean flag = true;
    static Scanner sc = new Scanner(System.in);
    static List<Work1_StudentObj> lists = new ArrayList<>();


    public static void main(String[] args) {

        //对输入的操作数进行合理范围的判断，输入有误则提示重新输入
        while (flag) {
            System.out.println("--©沙沙子-学生信息管理系统--------------------");
            System.out.println("   1.增加学生信息");
            System.out.println("   2.删除学生信息");
            System.out.println("   3.修改学生信息");
            System.out.println("   4.查找学生信息");
            System.out.println("   5.遍历所有学生信息");
            System.out.println("   0.退出系统");
            System.out.println("请选择要进行的操作序号： ");
            int no = sc.nextInt();
            if (0 > no || 5 < no) {
                System.out.println("输入的序号不对，请重新输入！");
            }
            //输入合理值，进行对应的操作
            if (0 == no) {//输入0，退出系统，结束循环体
                System.out.println("退出系统，谢谢光临！");
                flag = false;
            }else if(1 == no){//输入1时添加学生信息
                add();
                continue;
            }else if(2 == no) {//输入2时，按照学号进行删除操作
                delete();
                continue;
            } else if (3 == no) {//输入3时，进行修改操作
                set();
                continue;
            } else if (4 == no) {//输入4时，进行查询操作
                seek();
                continue;
            } else if (5 == no) {//输入5时，进行遍历
                allSee();
                continue;
            }

        }
    }
    //添加信息
    static void add(){
        while (flag){
            Work1_StudentObj stu = new Work1_StudentObj();
            System.out.println("请输入需要添加的学生学号：");
            try {
                stu.setId(sc.nextInt());
            } catch (IdException e) {
                e.printStackTrace();
            }
            System.out.println("请输入需要添加的学生姓名：");
            stu.setName(sc.next());
            System.out.println("请输入需要添加的学生年龄：");
            try {
                stu.setAge(sc.nextInt());
            } catch (AgeException e) {
                e.printStackTrace();
            }
            System.out.println("添加学生信息成功了！");
            lists.add(stu);
            System.out.println(lists);
            break;
        }
    }
    //删除学生信息，按照学号删除
    static void delete(){
        System.out.println("请输入需要删除的学生学号：");
        int id1 = sc.nextInt();
        for(int i=0; i<lists.size(); i++){
            if(id1 == lists.get(i).getId()){
                System.out.println("已找到学生信息，正在删除中...");
                lists.remove(i);
                System.out.println("删除成功！");
                break;
            }else{
                System.out.println("正在检索第"+(i+1)+"个学生信息..");
            }
        }
    }

    //修改学生信息
    static void set(){
        System.out.println("请输入需要删除的学生学号：");
        int id2 = sc.nextInt();
        for(int i=0; i<lists.size(); i++){
            if(id2 == lists.get(i).getId()){
                System.out.println("正在修改中...");
                System.out.print("请输入修改后的学生姓名： ");
                String name1 = sc.next();
                lists.get(i).setName(name1);
                System.out.print("请输入修改后的学生年龄： ");
                try {
                    lists.get(i).setAge(sc.nextInt());//
                } catch (AgeException e) {
                    e.printStackTrace();
                }
                System.out.println("修改成功了！");
                break;
            }else{
                System.out.println("正在检索第"+(i+1)+"个学生信息..");
            }
        }
    }
    //查询学生信息
    static void seek(){
        System.out.println("请输入需要查询的学生学号：");
        int id3 = sc.nextInt();
        for(int i=0; i<lists.size(); i++) {
            if (id3 == lists.get(i).getId()) {
                String name2 = lists.get(i).getName();
                int age2 = lists.get(i).getAge();
                System.out.println("已找到学号为" + id3 + "的学生姓名为：" + name2 + ",年龄为：" + age2);
            }else{
                System.out.println("正在查找第"+(i+1)+"个学生。。");
            }
        }
    }
    //遍历所有学生信息
    static void allSee(){
        for(Work1_StudentObj stu : lists){
            System.out.println("学号："+stu.getId()+" 姓名："+stu.getName()+" 年龄："+stu.getAge());
        }
    }
}